package com.tim.socket;

import java.net.*;
import java.io.*;

public class ChartServer2 {
	// 负责输入
	private BufferedReader reader;
	// 服务器套接字
	private ServerSocket server;
	// 套接字
	private Socket socket;

	// 缺省构造函数
	public ChartServer2() {
	}

	// 启动服务器
	void startServer() {
		try {
			// 创建服务器套接字
			server = new ServerSocket(720);
			System.out.println("服务器套接字建立完毕");
			while (true) {
				System.out.println("等待客户端GG");
				// 若客户端GG提出连接请求，与socket连接
				socket = server.accept();
				System.out.println("完成与客户端的连接");
				// 获取socket输入流，“UTF-8”这个编码设置是为了更好显示中文
				reader = new BufferedReader(new InputStreamReader(socket
						.getInputStream(), "UTF-8"));
				// 读取来自客户端的数据，并输出至画面上
				getMessage();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (server != null)
					// 关闭服务器套接字。
					server.close();
			} catch (IOException ie) {
				ie.printStackTrace();
			}
		}
	}

	// 读取来自套接字的信息
	void getMessage() {
		try {
			// 循环
			while (true) {
				System.out.println("客户端GG说：" + reader.readLine());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("客户端中断连接");
			try {
				// 关闭套接字的输入流
				if (reader != null)
					reader.close();
				// 关闭套接字
				if (socket != null)
					socket.close();
				reader = null;
				socket = null;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		ChartServer2 server = new ChartServer2();
		server.startServer();
	}
}
